package app.web.admin.mapper;

import app.web.admin.domain.pojo.Admin;
import com.mybatisflex.core.BaseMapper;
import com.mybatisflex.core.query.QueryChain;
import org.apache.ibatis.annotations.Mapper;

/**
 * 管理员 Mapper
 * @author feizns
 * @since 2025-04-09
 */
@Mapper
public interface AdminMapper extends BaseMapper<Admin> {

    /**
     * 手机号是否已存在
     * @param mobile 移动
     * @return boolean
     */
    static boolean existsMobile(String mobile) {
        return new Admin().where(Admin::getMobile).eq(mobile).exists();
    }

    /**
     * 邮箱是否已存在
     * @param email 邮箱
     * @return boolean
     */
    static boolean existsEmail(String email) {
        return new Admin().where(Admin::getEmail).eq(email).exists();
    }

    /**
     * 根据手机号和密码查询管理员
     * @param mobile 移动
     * @param password 密码
     * @return {@link Admin }
     */
    static Admin findByMobileAndPassword(String mobile, String password) {
        return new Admin().where(Admin::getMobile).eq(mobile).and(Admin::getPassword).eq(password).one();
    }

    /**
     * 超级管理员
     * @return {@link Admin }
     */
    static Admin superAdmin() {
        return QueryChain.of(Admin.class).eq(Admin::getId, Admin.SuperAdminId).one();
    }

}
